package com.hanamaki.DataStruct;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @author hanamaki
 * @version 1.0
 * @date 2021/6/28 16:50
 */
public class MapTest {

    public static void main(String[] args) {

//        初始化 一个 map容器
        /**
         * map容器 通过 key,value 来存值
         *  Integer 是key的数据类型
            String  是值的类型
         */
//         定义一个 键为 Integer  值为 String类型的  容器
        Map<Integer, String> map = new HashMap<>();

//        存值
//         map中的键 不要重复
        map.put(1, "hanamaki");
        map.put(332, "andy");
        map.put(3, "yuTou");

//        取值  获得 键为 1的  值
        String s = map.get(1);
        System.out.println(s);

//         获得 map容器中的 大小
        int size = map.size();
        System.out.println(size);

        System.out.println(map);

//         使用 增强  for循环遍历 map 容器   在 map中通过 键 来获取 对应的值
        Set<Integer> key = map.keySet();
//        得到 容器中  所有的键
        System.out.println(key);
//        遍历 set集合 ，将键逐一取出，得到相应的值
        for (Integer k : key) {
            // 通过 遍历出来的键 ，得到 相应的值
            String value = map.get(k);
            System.out.println("map中的键为：" + k + ",map中的值为：" + value);
        }


//
        System.out.println("使用  entrySet()  来遍历 map容器");
//         获得 键和值的视图  键和值 保存在 set容器中，需要遍历 set容器获取 键 和值
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
//        通过  迭代器来遍历 set容器
        Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
//        如果  迭代器中有下一个数据，就循环取出
        while (iterator.hasNext()) {
//            Entry
            Map.Entry<Integer, String> next = iterator.next();
            Integer k = next.getKey();
            String value = next.getValue();
            System.out.println("map中的键为：" + k + ",map中的值为：" + value);
        }


    }

}
